/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.axis2.jaxws.description.builder; import junit.framework.TestCase; import javax.xml.ws.Holder; import java.util.List; /** Tests the parsing of Generics that are used in the DescriptionBuilderComposite processing. */ public class ParameterParsingTests extends TestCase { public void testHolder() { String holderInputString = "javax.xml.ws.Holder<java.lang.Object>"; ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(holderInputString); assertEquals("javax.xml.ws.Holder<java.lang.Object>", pdc.getParameterType()); assertTrue(DescriptionBuilderUtils.isHolderType(holderInputString)); assertTrue(pdc.isHolderType()); String holderResultString = DescriptionBuilderUtils.getRawType(holderInputString); assertEquals("javax.xml.ws.Holder", holderResultString); holderResultString = pdc.getRawType(); assertEquals("javax.xml.ws.Holder", holderResultString); javax.xml.ws.Holder validateHolder = new javax.xml.ws.Holder(); assertEquals(validateHolder.getClass(), pdc.getParameterTypeClass()); String actualTypeResult = DescriptionBuilderUtils.getHolderActualType(holderInputString); assertEquals("java.lang.Object", actualTypeResult); actualTypeResult = pdc.getHolderActualType(); assertEquals("java.lang.Object", actualTypeResult); java.lang.Object validateObject = new java.lang.Object(); assertEquals(validateObject.getClass(), pdc.getHolderActualTypeClass()); } public void testHolderMyObject() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType( "javax.xml.ws.Holder<org.apache.axis2.jaxws.description.builder.MyObject>"); assertEquals("javax.xml.ws.Holder<org.apache.axis2.jaxws.description.builder.MyObject>", pdc.getParameterType()); assertTrue(pdc.isHolderType()); assertEquals("javax.xml.ws.Holder", pdc.getRawType()); assertEquals(Holder.class, pdc.getParameterTypeClass()); assertEquals("org.apache.axis2.jaxws.description.builder.MyObject", pdc.getHolderActualType()); assertEquals(MyObject.class, pdc.getHolderActualTypeClass()); } public void testNonHolderGenric() { String inputString = "java.util.List<org.apache.axis2.jaxws.description.builder.MyObject>"; ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(inputString); assertEquals("java.util.List<org.apache.axis2.jaxws.description.builder.MyObject>", pdc.getParameterType()); assertFalse(pdc.isHolderType()); String genericType = pdc.getRawType(); assertEquals("java.util.List", genericType); assertEquals(java.util.List.class, pdc.getParameterTypeClass()); // This should be null since the generic is not a Holder type String actualParam = pdc.getHolderActualType(); assertNull(actualParam); assertNull(pdc.getHolderActualTypeClass()); } public void testHolderGeneric() { String holderInputString = "javax.xml.ws.Holder<java.util.List<java.lang.Object>>"; ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(holderInputString); assertEquals("javax.xml.ws.Holder<java.util.List<java.lang.Object>>", pdc.getParameterType()); assertTrue(pdc.isHolderType()); String holderResultString = pdc.getRawType(); assertEquals("javax.xml.ws.Holder", holderResultString); assertEquals(Holder.class, pdc.getParameterTypeClass()); String actualTypeResult = pdc.getHolderActualType(); assertEquals("java.util.List", actualTypeResult); assertEquals(List.class, pdc.getHolderActualTypeClass()); } public void testPrimitivesEncoded() { String[] primitivesToTest = { "Z", "B", "C", "D", "F", "I", "J", "S", "V" }; Class[] primitiveClasses = { boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class, void.class }; for (int i = 0; i < primitivesToTest.length; i++) { assertFalse(DescriptionBuilderUtils.isHolderType(primitivesToTest[i])); assertNull(DescriptionBuilderUtils.getRawType(primitivesToTest[i])); ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(primitivesToTest[i]); assertEquals(primitiveClasses[i], pdc.getParameterTypeClass()); } } public void testPrimitives() { String[] primitivesToTest = { "boolean", "byte", "char", "double", "float", "int", "long", "short", "void" }; Class[] primitiveClasses = { boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class, void.class }; for (int i = 0; i < primitivesToTest.length; i++) { assertFalse(DescriptionBuilderUtils.isHolderType(primitivesToTest[i])); assertNull(DescriptionBuilderUtils.getRawType(primitivesToTest[i])); ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(primitivesToTest[i]); assertEquals(primitiveClasses[i], pdc.getParameterTypeClass()); } } public void testPrimitiveArrays() { String[] primitivesToTest = { "boolean[]", "byte[]", "char[]", "double[]", "float[]", "int[]", "long[]", "short[]" }; Class[] primitiveClasses = { boolean[].class, byte[].class, char[].class, double[].class, float[].class, int[].class, long[].class, short[].class }; for (int i = 0; i < primitivesToTest.length; i++) { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(primitivesToTest[i]); assertEquals(primitiveClasses[i], pdc.getParameterTypeClass()); } } public void testPrimitiveMultiDimArrays() { String[] primitivesToTest = { "boolean[][]", "byte[][][]", "char[][][][]", "double[][][][][]", "float[][][][][][]", "int[]", "long[]", "short[]" }; Class[] primitiveClasses = { boolean[][].class, byte[][][].class, char[][][][].class, double[][][][][].class, float[][][][][][].class, int[].class, long[].class, short[].class }; for (int i = 0; i < primitivesToTest.length; i++) { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType(primitivesToTest[i]); assertEquals(primitiveClasses[i], pdc.getParameterTypeClass()); } } public void testJavaLangObjectArrays() { ParameterDescriptionComposite pdcObject = new ParameterDescriptionComposite(); pdcObject.setParameterType("java.lang.Object[]"); Object[] verifyObject = new Object[5]; assertEquals(verifyObject.getClass(), pdcObject.getParameterTypeClass()); ParameterDescriptionComposite pdcString = new ParameterDescriptionComposite(); pdcString.setParameterType("java.lang.String[][][]"); String[][][] verifyString = new String[5][1][3]; assertEquals(verifyString.getClass(), pdcString.getParameterTypeClass()); ParameterDescriptionComposite pdcInteger = new ParameterDescriptionComposite(); pdcInteger.setParameterType("java.lang.Integer[][][][]"); Integer[][][][] verifyInteger = new Integer[5][1][3][12]; assertEquals(verifyInteger.getClass(), pdcInteger.getParameterTypeClass()); } public void testMyObjectArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("org.apache.axis2.jaxws.description.builder.MyObject[][]"); MyObject[][] myObject = new MyObject[2][3]; assertEquals(myObject.getClass(), pdc.getParameterTypeClass()); } public void testHolderOfPrimitiveArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("javax.xml.ws.Holder<byte[]>"); assertEquals("javax.xml.ws.Holder<byte[]>", pdc.getParameterType()); assertEquals(Holder.class, pdc.getParameterTypeClass()); byte [] validateByteArray = new byte[10]; assertEquals(validateByteArray.getClass(), pdc.getHolderActualTypeClass()); } public void testHolderOfMyObjectArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType( "javax.xml.ws.Holder<org.apache.axis2.jaxws.description.builder.MyObject[][]>"); assertEquals("javax.xml.ws.Holder<org.apache.axis2.jaxws.description.builder.MyObject[][]>", pdc.getParameterType()); assertEquals(Holder.class, pdc.getParameterTypeClass()); MyObject[][] validateMyObject = new MyObject[5][10]; assertEquals(validateMyObject.getClass(), pdc.getHolderActualTypeClass()); } public void testHolderOfStringArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("javax.xml.ws.Holder<java.lang.String[]>"); assertEquals("javax.xml.ws.Holder<java.lang.String[]>", pdc.getParameterType()); assertEquals(String[].class, pdc.getHolderActualTypeClass()); } public void testStringArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("java.lang.String[]"); assertEquals("java.lang.String[]", pdc.getParameterType()); assertEquals(String[].class, pdc.getParameterTypeClass()); } public void testHolderOfGenericArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("javax.xml.ws.Holder<java.util.List<java.lang.String>[]>"); assertEquals("javax.xml.ws.Holder<java.util.List<java.lang.String>[]>", pdc.getParameterType()); assertEquals(List[].class, pdc.getHolderActualTypeClass()); } public void testHolderOfGenericArrayMultiDimension() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("javax.xml.ws.Holder<java.util.List<java.lang.String>[][][]>"); assertEquals("javax.xml.ws.Holder<java.util.List<java.lang.String>[][][]>", pdc.getParameterType()); assertEquals(List[][][].class, pdc.getHolderActualTypeClass()); } public void testHolderOfGenericWildcardArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("javax.xml.ws.Holder<java.util.List<?>[]>"); assertEquals("javax.xml.ws.Holder<java.util.List<?>[]>", pdc.getParameterType()); assertEquals(List[].class, pdc.getHolderActualTypeClass()); } public void testGenericArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("java.util.List<java.lang.String>[]"); assertEquals("java.util.List<java.lang.String>[]", pdc.getParameterType()); assertEquals(List[].class, pdc.getParameterTypeClass()); } public void testGenericArrayMultiDimension() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("java.util.List<java.lang.String>[][]"); assertEquals("java.util.List<java.lang.String>[][]", pdc.getParameterType()); assertEquals(List[][].class, pdc.getParameterTypeClass()); } public void testGenericWildCardArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("java.util.List<?>[]"); assertEquals("java.util.List<?>[]", pdc.getParameterType()); assertEquals(List[].class, pdc.getParameterTypeClass()); } public void testGenericArrayOfStringArray() { ParameterDescriptionComposite pdc = new ParameterDescriptionComposite(); pdc.setParameterType("java.util.List<java.lang.String[]>[]"); assertEquals("java.util.List<java.lang.String[]>[]", pdc.getParameterType()); assertEquals(List[].class, pdc.getParameterTypeClass()); } } class MyObject { }